import Toast from '@vant/weapp/toast/toast';
import { getUserInfo, updateUserInfo, uploadFile } from '../../../api/user';

Page({
  data: {
    userInfo: null,
    submitting: false,
    // 性别选择器
    showGenderPopup: false,
    genderColumns: ['男', '女'],
    // 学院选择器
    showCollegePopup: false,
    collegeColumns: ['计算机学院', '机械工程学院', '电气工程学院', '经济管理学院', '外国语学院'],
    // 专业选择器
    showMajorPopup: false,
    majorColumns: {
      '计算机学院': ['计算机科学与技术', '软件工程', '网络工程', '人工智能'],
      '机械工程学院': ['机械设计制造及其自动化', '工业设计', '车辆工程'],
      '电气工程学院': ['电气工程及其自动化', '自动化', '电子信息工程'],
      '经济管理学院': ['工商管理', '市场营销', '会计学', '财务管理'],
      '外国语学院': ['英语', '日语', '德语', '法语']
    },
    currentMajorList: [],
    // 年级选择器
    showGradePopup: false,
    gradeColumns: ['2020级', '2021级', '2022级', '2023级']
  },

  onLoad() {
    this.loadUserInfo();
  },

  // 返回上一页
  onBack() {
    wx.navigateBack();
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      const userId = wx.getStorageSync('userId');
      if (!userId) {
        throw new Error('用户未登录');
      }
      const res = await getUserInfo(userId);
      if (res.code === 200 && res.data) {
        // 转换性别显示
        const genderText = res.data.gender === 1 ? '男' : (res.data.gender === 2 ? '女' : '');
        res.data.genderText = genderText;
        
        this.setData({ 
          userInfo: res.data,
          // 如果有学院信息，设置对应的专业列表
          currentMajorList: res.data.college ? this.data.majorColumns[res.data.college] : []
        });
      } else {
        throw new Error(res.message || '获取用户信息失败');
      }
    } catch (error) {
      console.error('获取用户信息失败:', error);
      Toast.fail(error.message || '获取用户信息失败');
      if (error.message.includes('未登录')) {
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    }
  },

  // 选择头像
  async chooseAvatar() {
    if (this.data.submitting) return;

    try {
      const res = await wx.chooseImage({
        count: 1,
        sizeType: ['compressed'],
        sourceType: ['album', 'camera']
      });

      const tempFilePath = res.tempFilePaths[0];
      
      Toast.loading({
        message: '上传中...',
        duration: 0
      });
      
      const avatarUrl = await uploadFile(tempFilePath, 'avatar');
      
      Toast.clear();
      
      if (avatarUrl) {
        this.setData({
          'userInfo.avatarUrl': avatarUrl
        });
        Toast.success('上传成功');
      } else {
        throw new Error('上传失败');
      }
    } catch (error) {
      console.error('上传头像失败:', error);
      Toast.fail(error.message || '上传失败');
    }
  },

  // 基本信息变更处理
  onNicknameChange(event) {
    this.setData({
      'userInfo.nickname': event.detail
    });
  },

  onPhoneChange(event) {
    this.setData({
      'userInfo.phone': event.detail
    });
  },

  // 学生信息变更处理
  onStudentIdChange(event) {
    this.setData({
      'userInfo.studentId': event.detail
    });
  },

  onRealNameChange(event) {
    this.setData({
      'userInfo.realName': event.detail
    });
  },

  // 性别选择器
  showGenderPicker() {
    this.setData({ showGenderPopup: true });
  },

  onCloseGenderPicker() {
    this.setData({ showGenderPopup: false });
  },

  onConfirmGender(event) {
    const genderText = event.detail.value;
    this.setData({
      'userInfo.gender': genderText === '男' ? 1 : 2,
      'userInfo.genderText': genderText,
      showGenderPopup: false
    });
  },

  // 学院选择器
  showCollegePicker() {
    this.setData({ showCollegePopup: true });
  },

  onCloseCollegePicker() {
    this.setData({ showCollegePopup: false });
  },

  onConfirmCollege(event) {
    const college = event.detail.value;
    this.setData({
      'userInfo.college': college,
      'userInfo.major': '', // 清空专业
      currentMajorList: this.data.majorColumns[college] || [],
      showCollegePopup: false
    });
  },

  // 专业选择器
  showMajorPicker() {
    if (!this.data.userInfo.college) {
      Toast('请先选择学院');
      return;
    }
    this.setData({ 
      showMajorPopup: true,
      currentMajorList: this.data.majorColumns[this.data.userInfo.college] || []
    });
  },

  onCloseMajorPicker() {
    this.setData({ showMajorPopup: false });
  },

  onConfirmMajor(event) {
    this.setData({
      'userInfo.major': event.detail.value,
      showMajorPopup: false
    });
  },

  // 年级选择器
  showGradePicker() {
    this.setData({ showGradePopup: true });
  },

  onCloseGradePicker() {
    this.setData({ showGradePopup: false });
  },

  onConfirmGrade(event) {
    this.setData({
      'userInfo.grade': event.detail.value,
      showGradePopup: false
    });
  },

  // 保存用户信息
  async saveUserInfo() {
    if (this.data.submitting) return;
    
    const { userInfo } = this.data;
    if (!userInfo.nickname) {
      Toast('请输入昵称');
      return;
    }

    // 验证必填字段
    if (!userInfo.studentId) {
      Toast('请输入学号');
      return;
    }
    if (!userInfo.realName) {
      Toast('请输入真实姓名');
      return;
    }
    if (!userInfo.college) {
      Toast('请选择学院');
      return;
    }
    if (!userInfo.major) {
      Toast('请选择专业');
      return;
    }
    if (!userInfo.grade) {
      Toast('请选择年级');
      return;
    }

    this.setData({ submitting: true });
    
    try {
      const updateData = {
        id: userInfo.id,
        nickname: userInfo.nickname,
        avatarUrl: userInfo.avatarUrl,
        phone: userInfo.phone,
        gender: userInfo.gender,
        studentId: userInfo.studentId,
        realName: userInfo.realName,
        college: userInfo.college,
        major: userInfo.major,
        grade: userInfo.grade
      };

      const res = await updateUserInfo(updateData);
      
      if (res.code === 200) {
        // 更新本地存储
        wx.setStorageSync('userInfo', userInfo);
        
        Toast.success('保存成功');
        
        // 返回上一页
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        throw new Error(res.message || '保存失败');
      }
    } catch (error) {
      console.error('保存用户信息失败:', error);
      Toast.fail(error.message || '保存失败');
    } finally {
      this.setData({ submitting: false });
    }
  }
}); 